package com.xhj.mybatis.scripting.xmltags;

/**
 * SqlNode
 *
 * @author XJks
 * @description SqlNode 接口定义了动态 SQL 片段节点的行为契约，负责根据运行时信息生成或修改 SQL 语句的一部分。TODO:该接口主要处理的是动态 SQL 语句的构建逻辑，具体指的是 XxxMapper.xml 文件中 <select>、<insert>、<update>、<delete> 等标签内的 SQL 语句片段，这些片段可能包含动态条件（如 if、choose、foreach 等标签）。
 */
public interface SqlNode {
    /**
     * apply 方法将当前节点应用到传入的 DynamicContext（动态上下文）中。
     * TODO:该方法的实现逻辑分析:根据实现类的处理逻辑，调用 {@link DynamicContext#appendSql(String)} 等方法修改对应 DynamicContext 对象，将相应的 SQL 片段拼接到 DynamicContext 中。
     *
     * @param context 包含正在构建的 SQL 文本、参数映射、变量等运行时信息。
     * @return 返回 true：表示该节点已成功应用，处理流程可以继续执行后续节点。返回 false：表示该节点决定停止后续节点的执行（例如 if/choose 条件不满足时）。
     */
    boolean apply(DynamicContext context);
}
